this._dragging = true;
[this._initialGrabX] = event.get_coords();
- let device = event.get_device();
- let sequence = event.get_event_sequence();
this._grab = global.stage.grab(this);
- this._grabbedDevice = device;
- this._grabbedSequence = sequence;
+ const backend = global.stage.get_context().get_backend();
+ const sprite = backend.get_sprite(global.stage, event);
+ this._sprite = sprite;
return Clutter.EVENT_STOP;
}
- vfunc_motion_event() {
- if (this._dragging && !this._grabbedSequence)
+ vfunc_motion_event(event) {
+ const backend = this.get_context().get_backend();
+ const sprite = backend.get_sprite(global.stage, event);
+
+ if (this._dragging && this._sprite === sprite)
return this._motionEvent(this, Clutter.get_current_event());
return Clutter.EVENT_PROPAGATE;
}
- vfunc_button_release_event() {
- if (this._dragging && !this._grabbedSequence)
+ vfunc_button_release_event(event) {
+ const backend = this.get_context().get_backend();
+ const sprite = backend.get_sprite(global.stage, event);
+
+ if (this._dragging && this._sprite === sprite)
return this._endDragging();
return Clutter.EVENT_PROPAGATE;
}
_touchDragging(actor, event) {
- let sequence = event.get_event_sequence();
+ const backend = actor.get_context().get_backend();
+ const sprite = backend.get_sprite(global.stage, event);
if (!this._dragging &&
event.type() === Clutter.EventType.TOUCH_BEGIN) {
this.startDragging(event);
return Clutter.EVENT_STOP;
- } else if (this._grabbedSequence &&
- sequence.get_slot() === this._grabbedSequence.get_slot()) {
+ } else if (this._sprite === sprite) {
if (event.type() === Clutter.EventType.TOUCH_UPDATE)
return this._motionEvent(this, event);
else if (event.type() === Clutter.EventType.TOUCH_END)
this.toggle();
this._dragged = false;
- this._grabbedSequence = null;
- this._grabbedDevice = null;
+ this._sprite = null;
this._dragging = false;
return Clutter.EVENT_STOP;